{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|default_exp models.XCMPlus"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XCMPlus"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is an unofficial PyTorch implementation of XCM created by Ignacio Oguiza (oguiza@timeseriesAI.co)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "from tsai.imports import *\n",
    "from tsai.utils import *\n",
    "from tsai.models.layers import *\n",
    "from tsai.models.utils import *\n",
    "from tsai.models.explainability import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "# This is an unofficial PyTorch implementation of XVM created by Ignacio Oguiza - timeseriesAU@gmail.com based on:\n",
    "\n",
    "# Fauvel, K., Lin, T., Masson, V., Fromont, É., & Termier, A. (2020). XCM: An Explainable Convolutional Neural Network \n",
    "# https://hal.inria.fr/hal-03469487/document\n",
    "# Official tensorflow implementation available at: https://github.com/XAIseries/XCM\n",
    "# No official XCM PyTorch implementation available as of Dec 11, 2021\n",
    "\n",
    "class XCMPlus(nn.Sequential):\n",
    "    def __init__(self, c_in:int, c_out:int, seq_len:Optional[int]=None, nf:int=128, window_perc:float=1., flatten:bool=False, custom_head:callable=None, \n",
    "                 concat_pool:bool=False, fc_dropout:float=0., bn:bool=False, y_range:tuple=None, **kwargs):\n",
    "        \n",
    "        window_size = int(round(seq_len * window_perc, 0))\n",
    "        \n",
    "        backbone = _XCMPlus_Backbone(c_in, c_out, seq_len=seq_len, nf=nf, window_perc=window_perc)\n",
    "            \n",
    "        self.head_nf = nf\n",
    "        self.c_out = c_out\n",
    "        self.seq_len = seq_len\n",
    "        if custom_head: \n",
    "            if isinstance(custom_head, nn.Module): head = custom_head\n",
    "            else: head = custom_head(self.head_nf, c_out, seq_len, **kwargs)\n",
    "        else: head = self.create_head(self.head_nf, c_out, seq_len, flatten=flatten, concat_pool=concat_pool, \n",
    "                                           fc_dropout=fc_dropout, bn=bn, y_range=y_range)\n",
    "        \n",
    "        super().__init__(OrderedDict([('backbone', backbone), ('head', head)]))\n",
    "\n",
    "        \n",
    "    def create_head(self, nf, c_out, seq_len=None, flatten=False, concat_pool=False, fc_dropout=0., bn=False, y_range=None):\n",
    "        if flatten: \n",
    "            nf *= seq_len\n",
    "            layers = [Reshape()]\n",
    "        else: \n",
    "            if concat_pool: nf *= 2\n",
    "            layers = [GACP1d(1) if concat_pool else GAP1d(1)]\n",
    "        layers += [LinBnDrop(nf, c_out, bn=bn, p=fc_dropout)]\n",
    "        if y_range: layers += [SigmoidRange(*y_range)]\n",
    "        return nn.Sequential(*layers)\n",
    "    \n",
    "    \n",
    "    def show_gradcam(self, x, y=None, detach=True, cpu=True, apply_relu=True, cmap='inferno', figsize=None, **kwargs):\n",
    "\n",
    "        att_maps = get_attribution_map(self, [self.backbone.conv2dblock, self.backbone.conv1dblock], x, y=y, detach=detach, cpu=cpu, apply_relu=apply_relu)\n",
    "        att_maps[0] = (att_maps[0] - att_maps[0].min()) / (att_maps[0].max() - att_maps[0].min())\n",
    "        att_maps[1] = (att_maps[1] - att_maps[1].min()) / (att_maps[1].max() - att_maps[1].min())\n",
    "\n",
    "        figsize = ifnone(figsize, (10, 10))\n",
    "        fig = plt.figure(figsize=figsize, **kwargs)\n",
    "        ax = plt.axes()\n",
    "        plt.title('Observed variables')\n",
    "        if att_maps[0].ndim == 3:\n",
    "            att_maps[0] = att_maps[0].mean(0)\n",
    "        im = ax.imshow(att_maps[0], cmap=cmap)\n",
    "        cax = fig.add_axes([ax.get_position().x1+0.01,ax.get_position().y0,0.02,ax.get_position().height])\n",
    "        plt.colorbar(im, cax=cax)\n",
    "        plt.show()\n",
    "\n",
    "        fig = plt.figure(figsize=figsize, **kwargs)\n",
    "        ax = plt.axes()\n",
    "        plt.title('Time')\n",
    "        if att_maps[1].ndim == 3:\n",
    "            att_maps[1] = att_maps[1].mean(0)\n",
    "        im = ax.imshow(att_maps[1], cmap=cmap)\n",
    "        cax = fig.add_axes([ax.get_position().x1+0.01,ax.get_position().y0,0.02,ax.get_position().height])\n",
    "        plt.colorbar(im, cax=cax)\n",
    "        plt.show()\n",
    "        \n",
    "        \n",
    "class _XCMPlus_Backbone(Module):\n",
    "    def __init__(self, c_in:int, c_out:int, seq_len:Optional[int]=None, nf:int=128, window_perc:float=1.):\n",
    "        window_size = int(round(seq_len * window_perc, 0))\n",
    "        self.conv2dblock = nn.Sequential(*[Unsqueeze(1), Conv2d(1, nf, kernel_size=(1, window_size), padding='same'), BatchNorm(nf), nn.ReLU()])\n",
    "        self.conv2d1x1block = nn.Sequential(*[nn.Conv2d(nf, 1, kernel_size=1), nn.ReLU(), Squeeze(1)])\n",
    "        self.conv1dblock = nn.Sequential(*[Conv1d(c_in, nf, kernel_size=window_size, padding='same'), BatchNorm(nf, ndim=1), nn.ReLU()])\n",
    "        self.conv1d1x1block = nn.Sequential(*[nn.Conv1d(nf, 1, kernel_size=1), nn.ReLU()])\n",
    "        self.concat = Concat()\n",
    "        self.conv1d = nn.Sequential(*[Conv1d(c_in + 1, nf, kernel_size=window_size, padding='same'), BatchNorm(nf, ndim=1), nn.ReLU()])\n",
    "            \n",
    "    def forward(self, x):\n",
    "        x1 = self.conv2dblock(x)\n",
    "        x1 = self.conv2d1x1block(x1)\n",
    "        x2 = self.conv1dblock(x)\n",
    "        x2 = self.conv1d1x1block(x2)\n",
    "        out = self.concat((x2, x1))\n",
    "        out = self.conv1d(out)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tsai.data.basics import *\n",
    "from tsai.learner import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "XCMPlus(\n",
       "  (backbone): _XCMPlus_Backbone(\n",
       "    (conv2dblock): Sequential(\n",
       "      (0): Unsqueeze(dim=1)\n",
       "      (1): Conv2dSame(\n",
       "        (conv2d_same): Conv2d(1, 128, kernel_size=(1, 51), stride=(1, 1))\n",
       "      )\n",
       "      (2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (3): ReLU()\n",
       "    )\n",
       "    (conv2d1x1block): Sequential(\n",
       "      (0): Conv2d(128, 1, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (1): ReLU()\n",
       "      (2): Squeeze(dim=1)\n",
       "    )\n",
       "    (conv1dblock): Sequential(\n",
       "      (0): Conv1d(24, 128, kernel_size=(51,), stride=(1,), padding=(25,))\n",
       "      (1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (2): ReLU()\n",
       "    )\n",
       "    (conv1d1x1block): Sequential(\n",
       "      (0): Conv1d(128, 1, kernel_size=(1,), stride=(1,))\n",
       "      (1): ReLU()\n",
       "    )\n",
       "    (concat): Concat(dim=1)\n",
       "    (conv1d): Sequential(\n",
       "      (0): Conv1d(25, 128, kernel_size=(51,), stride=(1,), padding=(25,))\n",
       "      (1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (2): ReLU()\n",
       "    )\n",
       "  )\n",
       "  (head): Sequential(\n",
       "    (0): GAP1d(\n",
       "      (gap): AdaptiveAvgPool1d(output_size=1)\n",
       "      (flatten): Reshape(bs)\n",
       "    )\n",
       "    (1): LinBnDrop(\n",
       "      (0): Linear(in_features=128, out_features=6, bias=True)\n",
       "    )\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dsid = 'NATOPS'\n",
    "X, y, splits = get_UCR_data(dsid, split_data=False)\n",
    "tfms = [None, TSCategorize()]\n",
    "dls = get_ts_dls(X, y, splits=splits, tfms=tfms)\n",
    "model =  XCMPlus(dls.vars, dls.c, dls.len)\n",
    "learn = ts_learner(dls, model, metrics=accuracy)\n",
    "xb, yb = dls.one_batch()\n",
    "\n",
    "bs, c_in, seq_len = xb.shape\n",
    "c_out = len(np.unique(yb.cpu().numpy()))\n",
    "\n",
    "model = XCMPlus(c_in, c_out, seq_len, fc_dropout=.5)\n",
    "test_eq(model.to(xb.device)(xb).shape, (bs, c_out))\n",
    "model = XCMPlus(c_in, c_out, seq_len, concat_pool=True)\n",
    "test_eq(model.to(xb.device)(xb).shape, (bs, c_out))\n",
    "model = XCMPlus(c_in, c_out, seq_len)\n",
    "test_eq(model.to(xb.device)(xb).shape, (bs, c_out))\n",
    "model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3QAAAGuCAYAAADYqkTbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQ9klEQVR4nO3de3hU1aH//8+eSWZyD4RLQjDKRRSxCh4oiPdKjuixKmpbtLYitZ72SFptvrZ9bE9Bac+JtX2Uo0XxeLS2tVawtvqzrXg0gpcWL4WDeCuKBUE04Z4byUxm9vr9QZk6JSiz1oSwJ++XzzyPzOzPXmv27Nl7VtZae3vGGCMAAAAAQOCE+roCAAAAAAA7NOgAAAAAIKBo0AEAAABAQNGgAwAAAICAokEHAAAAAAFFgw4AAAAAAooGHQAAAAAEFA06AAAAAAgoGnQAAAAAEFA06ADgEHPDDTfI8zxt27atr6ty0HmepxtuuKGvq5GyfPlyeZ6n5cuXZ5y94oorVFJSckDLHmrvGwAQHDToAOAgeP311/WFL3xBw4cPVzQaVXV1tS677DK9/vrrfV01AAAQYHl9XQEAyHW/+c1vdOmll6qiokJXXnmlRo4cqQ0bNuiee+7Rr3/9az344IO68MIL+7qa6MFpp52mzs5ORSKRvq4KAAA9okEHAL3onXfe0Re/+EWNGjVKzz77rIYMGZJ67ZprrtGpp56qL37xi1qzZo1GjRrVhzXdl+/7isfjKigo6OuqHHRdXV2KRCIKhUL98v0DAIKDIZcA0It+9KMfaffu3frv//7vtMacJA0ePFh33XWXOjo6dPPNN++T3bZtmz73uc+prKxMgwYN0jXXXKOurq60ZZ588kmdcsopGjBggEpKSnT00UfrO9/5TtoysVhM8+bN05FHHqloNKqamhp961vfUiwWS1vO8zzV1dXpl7/8pY499lhFo1E99thjqqio0OzZs/epX2trqwoKCnTddddlXFYsFtM3vvENDRkyRKWlpTr//PP13nvvfez2bG5uVl5enm688cZ9Xlu7dq08z9NPfvITSdKOHTt03XXX6bjjjlNJSYnKysp0zjnn6JVXXknL7Z0n9+CDD+rf//3fNXz4cBUVFam1tbXHOXTPPfecPvvZz+rwww9PvcdvfOMb6uzs7LHOf/3rXzV9+nQVFxerurpa8+fPlzHmY9/r5s2b9aUvfUmVlZWKRqM69thjde+99+6z3O23365jjz1WRUVFGjhwoCZNmqQHHnjgY9cPAMgN9NABQC967LHHNGLECJ166qk9vn7aaadpxIgR+v3vf7/Pa5/73Oc0YsQINTQ06IUXXtBtt92mnTt36uc//7mkPfPyPv3pT+v444/X/PnzFY1GtW7dOv3xj39MrcP3fZ1//vl6/vnn9a//+q865phj9Oqrr+rWW2/VW2+9pUceeSStzKefflpLlixRXV2dBg8erDFjxujCCy/Ub37zG911111pQw8feeQRxWIxXXLJJRmX9eUvf1n333+/Pv/5z+ukk07S008/rXPPPfdjt2dlZaVOP/10LVmyRPPmzUt7bfHixQqHw/rsZz8raU9D6pFHHtFnP/tZjRw5Us3Nzbrrrrt0+umn64033lB1dXVa/vvf/74ikYiuu+46xWKx/Q6zfOihh7R7927927/9mwYNGqSXXnpJt99+u9577z099NBDacsmk0mdffbZOvHEE3XzzTdr6dKlmjdvnhKJhObPn7/f99nc3KwTTzwx1cgeMmSIHn/8cV155ZVqbW3VtddeK0m6++679fWvf12f+cxnUg3+NWvW6MUXX9TnP//5j92eAIAcYAAAvWLXrl1Gkrngggs+crnzzz/fSDKtra3GGGPmzZtnJJnzzz8/bbmrr77aSDKvvPKKMcaYW2+91UgyW7du3e+6f/GLX5hQKGSee+65tOcXLVpkJJk//vGPqeckmVAoZF5//fW0ZZ944gkjyTz22GNpz//Lv/yLGTVqVMZlrV692kgyV199ddpyn//8540kM2/evP2+H2OMueuuu4wk8+qrr6Y9P27cOHPmmWem/t3V1WWSyWTaMuvXrzfRaNTMnz8/9dyyZcuMJDNq1Cize/futOX3vrZs2bLUc/+4jDHGNDQ0GM/zzLvvvpt6btasWUaS+drXvpZ6zvd9c+6555pIJJL2uf3j+77yyivNsGHDzLZt29LKueSSS0x5eXmqDhdccIE59thj96kPAKD/YMglAPSStrY2SVJpaelHLrf39dbW1rTn58yZk/bvr33ta5KkP/zhD5KkAQMGSJIeffRR+b7f47ofeughHXPMMRo7dqy2bduWepx55pmSpGXLlqUtf/rpp2vcuHFpz5155pkaPHiwFi9enHpu586devLJJzVz5syMy9pb/69//etp5eztdfo4F110kfLy8tLq89prr+mNN95Iq080GlUotOc0l0wmtX379tSw1FWrVu2z3lmzZqmwsPBjy//wMh0dHdq2bZtOOukkGWP0f//3f/ssX1dXl/r/vT1u8XhcTz31VI/rN8bo4Ycf1nnnnSdjTNq2nD59ulpaWlL1HzBggN577z29/PLLH1tvAEBuokEHAL1kb0Ntb8Nuf/bX8BszZkzav0ePHq1QKKQNGzZIkmbOnKmTTz5ZX/7yl1VZWalLLrlES5YsSWvcvf3223r99dc1ZMiQtMdRRx0lSdqyZUtaGSNHjtynfnl5ebr44ov16KOPpubC/eY3v1F3d3daA+pAy3r33XcVCoU0evTotHKOPvroj9xOew0ePFjTpk3TkiVLUs8tXrxYeXl5uuiii1LP+b6vW2+9VWPGjFE0GtXgwYM1ZMgQrVmzRi0tLfust6f33pONGzfqiiuuUEVFhUpKSjRkyBCdfvrpkrTPekOh0D4Xu9m7PfZ+jv9o69at2rVrV2re5Ycfe+cy7t2W3/72t1VSUqLJkydrzJgxmjNnTtqQWwBA7mMOHQD0kvLycg0bNkxr1qz5yOXWrFmj4cOHq6ys7COX8zwv7d+FhYV69tlntWzZMv3+97/X0qVLtXjxYp155pn63//9X4XDYfm+r+OOO0633HJLj+usqanZZ509ueSSS3TXXXfp8ccf14wZM7RkyRKNHTtW48ePTy2TaVkuLrnkEs2ePVurV6/WhAkTtGTJEk2bNk2DBw9OLfOf//mf+t73vqcvfelL+v73v6+KigqFQiFde+21PfZoHkjvXDKZ1D//8z9rx44d+va3v62xY8equLhYmzdv1hVXXLHfntJM7F3HF77wBc2aNavHZY4//nhJ0jHHHKO1a9fqd7/7nZYuXaqHH35Yd9xxh+bOndvjhWMAALmHBh0A9KJPf/rTuvvuu/X888/rlFNO2ef15557Ths2bNBXvvKVfV57++2303qN1q1bJ9/3NWLEiNRzoVBI06ZN07Rp03TLLbfoP//zP/Xd735Xy5YtU21trUaPHq1XXnlF06ZN26dBmInTTjtNw4YN0+LFi3XKKafo6aef1ne/+920ZQ60rCOOOEK+7+udd95J65Vbu3btAddnxowZ+spXvpIadvnWW2/p+uuvT1vm17/+tT71qU/pnnvuSXt+165daQ2/TLz66qt666239LOf/UyXX3556vknn3yyx+V939df//rXVK/c3rpKSvscP2zvlT+TyaRqa2s/tk7FxcWaOXOmZs6cqXg8rosuukj/8R//oeuvv55bLgBAP8CQSwDoRd/85jdVWFior3zlK9q+fXvaazt27NBXv/pVFRUV6Zvf/OY+2YULF6b9+/bbb5cknXPOOan8P5owYYIkpYZGfu5zn9PmzZt1991377NsZ2enOjo6Duh9hEIhfeYzn9Fjjz2mX/ziF0okEmnDLTMpa2/9b7vttrRlFixYcEB1kfbMHZs+fbqWLFmiBx98UJFIRDNmzEhbJhwO73N7gIceekibN28+4HL+UTgclqS09Rpj9F//9V/7zey9jcLeZX/yk58oPz9f06ZN228ZF198sR5++GG99tpr+7y+devW1P//4z4ViUQ0btw4GWPU3d19YG8KABBo9NABQC8aM2aMfvazn+myyy7TcccdpyuvvFIjR47Uhg0bdM8992jbtm361a9+tc98Mklav369zj//fJ199tlasWJF6jL/e4c5zp8/X88++6zOPfdcHXHEEdqyZYvuuOMOHXbYYanewC9+8YtasmSJvvrVr2rZsmU6+eSTlUwm9Ze//EVLlizRE088oUmTJh3Qe5k5c6Zuv/12zZs3T8cdd5yOOeaYtNcPtKwJEybo0ksv1R133KGWlhaddNJJamxs1Lp16zLatjNnztQXvvAF3XHHHZo+fXrqIjF7ffrTn9b8+fM1e/ZsnXTSSXr11Vf1y1/+0ukG7mPHjtXo0aN13XXXafPmzSorK9PDDz+snTt39rh8QUGBli5dqlmzZmnKlCl6/PHH9fvf/17f+c539rkv4YfddNNNWrZsmaZMmaKrrrpK48aN044dO7Rq1So99dRTqcb8WWedpaqqKp188smqrKzUm2++qZ/85Cc699xzP/ZiPACAHNF3F9gEgP5jzZo15tJLLzXDhg0z+fn5pqqqylx66aX7XHrfmL/ftuCNN94wn/nMZ0xpaakZOHCgqaurM52dnanlGhsbzQUXXGCqq6tNJBIx1dXV5tJLLzVvvfVW2vri8bj54Q9/aI499lgTjUbNwIEDzcSJE82NN95oWlpaUstJMnPmzNnve/B939TU1BhJ5gc/+EGPyxxoWZ2dnebrX/+6GTRokCkuLjbnnXee2bRp0wHdtmCv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",
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3QAAAGuCAYAAADYqkTbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvg0lEQVR4nO3df5RWdZ0A/vczgzMDyqCIzgCCgJZGrVAQE5Wb6SRx+rpabouumzSVe04xbTbHU8ezK/jrNKYeY2sJWgsty9Xas9qpLVqbBE/fUBKWk7nJEb8YKM0AFYyMMYPz3O8f5NjkYMzz3GG4d14vzz3y3Ofez+fzwJ0Z3rzfn8+nkCRJEgAAAGROxXAPAAAAgNII6AAAADJKQAcAAJBRAjoAAICMEtABAABklIAOAAAgowR0AAAAGSWgAwAAyCgBHQAAQEYJ6AA46j784Q/HtGnThnsYAJB5o4Z7AADkQ6FQOKLrHn744SEeCQCMHIUkSZLhHgQA2ffNb36z3+tvfOMb8dBDD8U999zT7/x73vOeGD9+fBSLxaiurj6aQwSA3BHQATAkmpubY8WKFeHHDAAMHXPoADjq/nwO3bPPPhuFQiFuv/32WLFiRcyYMSPGjBkTF154YezYsSOSJImbbropTjvttBg9enRcfPHF8bvf/e5V7f7whz+Mc889N44//vgYO3ZsvO9974snn3zyKH4yADi6zKED4JjxrW99K3p6euKTn/xk/O53v4tbb701/u7v/i7OP//8WLt2bXz2s5+NrVu3xpe+9KW45pprYvXq1X333nPPPbF48eJYsGBBfP7zn48XX3wxVq5cGe985zvjf//3fy3CAkAuCegAOGY8//zz8fTTT8e4ceMiIqK3tzdaW1vjD3/4Qzz++OMxatShH1u7d++Ob33rW7Fy5cqorq6O/fv3xz/90z/Fxz72sfj3f//3vvYWL14cZ511Vnzuc5/rdx4A8kLJJQDHjA9+8IN9wVxERENDQ0RE/MM//ENfMPfy+Z6ennj++ecjIuKhhx6KvXv3xuWXXx579uzpOyorK6OhocHKmgDklgwdAMeMqVOn9nv9cnA3ZcqUAc///ve/j4iIp59+OiIizj///AHbra2tTXWcAHCsENABcMyorKwc1PmXV9AsFosRcWgeXX19/auu+9PsHgDkiZ9wAGTeGWecERERp556ajQ2Ng7zaADg6DGHDoDMW7BgQdTW1sbnPve5OHjw4Kve37179zCMCgCGngwdAJlXW1sbK1eujA996EPxlre8JS677LI45ZRTYvv27fHf//3f8Y53vCP+7d/+bbiHCQCpE9ABkAt///d/H5MmTYpbbrklbrvttuju7o7JkyfHueeeG01NTcM9PAAYEoXk5RnlAAAAZIo5dAAAABkloAMAAMgoAR0AAEBGCegAAAAySkAHAACQUQI6AACAjDrm9qErFouxc+fOGDt2bBQKheEeDgAAMEySJIkXXnghJk2aFBUVr52LOnDgQPT09KTWd1VVVdTU1KTW3lA55gK6nTt3xpQpU4Z7GAAAwDFix44dcdpppx32/QMHDsT06fXR3r4vtT7r6+tj27Ztx3xQd8wFdGPHjv3jryoiopQM3XDuk17Ob+dLZdxbWfKdo6sO/4Xxl4wqVJV8b0REEsWS7z3wUulfrBWF40q+t7ryhJLvLRRK/3OKiOg88GzJ99bWTCv53nGVE0u+92DSXfK9Jyel9xsR0VXoLPne3xefL/nekytK/wep3yftJd8bZXw9HSy+WEa/EX84+NuS7+0tHiij59I/8wnVpf859SblfL+OqKk8saz7S/X/jJ5X8r0/O/BcyffOrJxc8r0REVfM+F3J9/76hbF/+aLDmHx8V8n3XvDetpLvrTy+nK+JiP/3e+8p6/5S7eisLfne3/WU/veJxhlbS743IuKUU3aXfO99G95W8r0fePOmku89vvaFku8tHNdb8r0RESfM2FnyvZWf+FJJ93V2/iGmTf3Un8QIA+vp6Yn29n3x//36C1FbO7qkvv683xmnfzp6enoEdIP1SpllIUoL6IZPoYzxJmV91tLvLRRKn0ZZboAyfOMens9c7u9XOSXI5fRdUSj920RFlP6DozJKD7wjygvcy/v9Kr3fijL+caac7yHlP5vlfE0N1/e+Mr6WywgkIyIqyv7eWZqqiuqS760s47k+rsx//BtTWXrfNZWl9z2msvSyrdrq0r8mKmvK+7vP8WX8fpVjdBm/1zUVpd97wqjy/io7tqr0r8dyxj32uNL7Pb6MMVccV17i44Qyns/K2jFl9X2kPy/Gjj0uxo4t/+sgKfMf746mIVsUZcWKFTFt2rSoqamJhoaG2LBhw1B1BQAAMCINSUB3//33R0tLSyxbtiw2bdoUs2bNigULFsSuXbuGojsAAIBIkt7UjqwYkoDujjvuiKuuuiqamppi5syZsWrVqhgzZkysXr16KLoDAACIYvJSakdWpB7Q9fT0xMaNG6OxsfGVTioqorGxMdavX/+q67u7u6Ozs7PfAQAAwF+WekC3Z8+e6O3tjbq6un7n6+rqor391Su4tba2xrhx4/oOWxYAAAClSJKXUjuyYsgWRTlS1157bezbt6/v2LFjx3APCQAAyKBD89/SCOiyM4cu9W0LJkyYEJWVldHR0dHvfEdHR9TX17/q+urq6qiuLn0pZQAAgJEq9QxdVVVVzJkzJ9raXtlUs1gsRltbW8yfPz/t7gAAACIiIim+lNqRFUOysXhLS0ssXrw45s6dG/PmzYvly5dHV1dXNDU1DUV3AAAAEclLh4402smIIQnoFi1aFLt3746lS5dGe3t7zJ49O9asWfOqhVIAAADSktaCJhZFiYjm5ub49a9/Hd3d3fHYY49FQ0PDUHUFAAAw7FasWBHTpk2LmpqaaGhoiA0bNhz22rvvvjsKhUK/o6amZtB9DkmGDgAA4KgrvhRRPJhOO4N0//33R0tLS6xatSoaGhpi+fLlsWDBgtiyZUuceuqpA95TW1sbW7Zs6XtdKBQG3e+wb1sAAACQhuHch+6OO+6Iq666KpqammLmzJmxatWqGDNmTKxevfqw9xQKhaivr+87SpmiJqADAAAYQGdnZ7+ju7t7wOt6enpi48aN0djY2HeuoqIiGhsbY/369Ydtf//+/XH66afHlClT4uKLL44nn3xy0GMU0AEAAPlQfCm9IyKmTJkS48aN6ztaW1sH7HbPnj3R29v7qgxbXV1dtLe3D3jPWWedFatXr47vfve78c1vfjOKxWK8/e1vj+eee25QH9kcOgAAIB+KL0UUK9NpJyJ27NgRtbW1faerq6vLb/uP5s+f32+f7re//e3xhje8Ib7yla/ETTfddMTtCOgAAAAGUFtb2y+gO5wJEyZEZWVldHR09Dvf0dER9fX1R9TXcccdF29+85tj69atgxqjkksAACAnel/ZXLycI3oH1WtVVVXMmTMn2tra+s4Vi8Voa2vrl4V7zZH39sYTTzwREydOHFTfMnQAAEAuFIovRaFYfs6qUMK2BS0tLbF48eKYO3duzJs3L5YvXx5dXV3R1NQUERFXXnllTJ48uW8e3o033hhve9vb4swzz4y9e/fGbbfdFr/+9a/jYx/72KD6FdABAAD5UHwpIoWArpR96BYtWhS7d++OpUuXRnt7e8yePTvWrFnTt1DK9u3bo6LilbH9/ve/j6uuuira29vjpJNOijlz5sTPfvazmDlz5qD6FdABAACkoLm5OZqbmwd8b+3atf1ef+ELX4gvfOELZfcpoAMAAPJhGDN0w0VABwAA5EIheSkKSQpz6JLsBHRWuQQAAMgoGToAACAfisWI4uC2HDhsOxkhoAMAAHLh0LYFhVTayQoBHQAAkA/F3pQWRUkhy3eUmEMHAACQUTJ0AABAPhRfikih5NK2BQAAAEdZodgbhRRKLgtKLgEAABhqMnQAAEA+JCktipJkJ0MnoAMAAHKhUCymUi5ZyNA+dEouAQAAMkqGDgAAyIdib0qrXCq5BAAAOKoOrXJZfkCXpVUuBXQAAEA+jMAMnTl0AAAAGSVDBwAA5IKSSwAAgKxScgkAAEBWyNABAAC5UCgmqWwKXigmKYzm6BDQAQAA+VDsjSg/nlNyCQAAwNCToQMAAPIhSSlDl2QnQyegAwAAcqGQFKOQpLBtQZJGVHh0COgAAIB8MIcOAACArJChAwAA8qFYTGljcSWXAAAAR9cIDOiUXAIAAGSUDB0AAJALhWIxCikk1woZytAJ6AAAgHwoFlNa5TI7AZ2SSwAAgIySoQMAAPJhBGboBHQAAEA+COgAAAAyKumNKCYptJOdgM4cOgAAgIySoQMAAHLBtgUAAABZNQLn0Cm5BAAAyCgZOgAAIB9GYIZOQAcAAORDMUknGEtjpcyjRMklAABARsnQAQAA+VBMUiq5zE6GTkAHAADkQ7EYUSyk0I6ADgAA4OgagQGdOXQAAAAZJUMHAADkgzl0AAAAGZUUI5IUSi6T7AR0Si4BAAAySoYOAADIhySlkssMZegEdAAAQD6MwDl0Si4BAAAySoYOAADIhxGYoRPQAQAAuZAUDx1ptJMVqZdcXn/99VEoFPodZ599dtrdAAAA9FdM0jsyYkgydG984xvjxz/+8SudjJIIBAAASNuQRFqjRo2K+vr6oWgaAABgYMVIaQ5dCm0cJUOyyuXTTz8dkyZNihkzZsQVV1wR27dvP+y13d3d0dnZ2e8AAAAYtGKKR0akHtA1NDTE3XffHWvWrImVK1fGtm3b4txzz40XXnhhwOtbW1tj3LhxfceUKVPSHhIAAMCQW7FiRUybNi1qamqioaEhNmzYcET33XfffVEoFOKSSy4ZdJ+pB3QLFy6MD37wg3HOOefEggUL4gc/+EHs3bs3vv3tbw94/bXXXhv79u3rO3bs2JH2kAAAgJEgSfEYpPvvvz9aWlpi2bJlsWnTppg1a1YsWLAgdu3a9Zr3Pfvss3HNNdfEueeeO/hO4yhsLH7iiSfG61//+ti6deuA71dXV0dtbW2/AwAAYLCSYiG1Y7DuuOOOuOqqq6KpqSlmzpwZq1atijFjxsTq1asPe09vb29cccUVccMNN8SMGTNK+sxDHtDt378/nnnmmZg4ceJQdwUAAIxkKc+h+/O1Prq7uwfstqenJzZu3BiNjY195yoqKqKxsTHWr19/2OHeeOONceqpp8ZHP/rRkj9y6gHdNddcE+vWrYtnn302fvazn8X73//+qKysjMsvvzztrgAAAIbMlClT+q330draOuB1e/bsid7e3qirq+t3vq6uLtrb2we856c//Wl87WtfizvvvLOsMaa+bcFzzz0Xl19+efz2t7+NU045Jd75znfGo48+GqecckraXQEAALwiKUSUUC756nYO/W/Hjh39poRVV1eX33ZEvPDCC/GhD30o7rzzzpgwYUJZbaUe0N13331pNwkAAPAXlTr/7dXtHPr/ka7xMWHChKisrIyOjo5+5zs6Ogbcn/uZZ56JZ599Ni666KK+c8XioU5HjRoVW7ZsiTPOOOOIxjrkc+gAAADyrKqqKubMmRNtbW1954rFYrS1tcX8+fNfdf3ZZ58dTzzxRGzevLnv+Ju/+Zt497vfHZs3bx7UVm6pZ+gAAACGRTGlkssSNhZvaWmJxYsXx9y5c2PevHmxfPny6OrqiqampoiIuPLKK2Py5MnR2toaNTU18aY3vanf/SeeeGJExKvO/yUCOgAAIB+SwqGj7HYGf8uiRYti9+7dsXTp0mhvb4/Zs2fHmjVr+hZK2b59e1RUpF8gKaADAABIQXNzczQ3Nw/43tq1a1/z3rvvvrukPgV0AABALqS9KEoWCOgAAIB8KFakNIeuhJrLYSKgAwAA8mEYF0UZLrYtAAAAyCgZOgAAIBeSpBBJCqtcJtmpuBTQAQAAOTEC59ApuQQAAMgoGToAACAXkmKktG1BdjJ0AjoAACAfkpRWuUxhHt7RouQSAAAgo2ToAACAXEhvlcvsZOgEdAAAQD4UKw4dZbdTfhNHi4AOAADIhaRYSGlRlOxk6MyhAwAAyCgZOgAAIBfMoQMAAMiqETiHTsklAABARsnQAQAAuTASF0UR0AEAALkwEufQKbkEAADIKBk6AAAgH0bgoigCOgAAIBfMoQMAAMgoc+gAAADIDBk6AAAgH5KU5tAl5TdxtAjoAACAXBiJc+iUXAIAAGSUDB0AAJALSZLOgiaJkksAAICjLKWSy1ByCQAAwFCToQMAAHIhSSoiScrPWSUZqrkU0AEAAPlQLKRTLpmhkksBHQAAkAtJUkhpUZTsBHTm0AEAAGSUDB0AAJALI3FjcQEdAACQCyNxURQllwAAABklQwcAAOSCkksAAICMGomrXAroAACAXBiJAZ05dAAAABklQwcAAORCkqQ0hy5DGToBHQAAkAu2LQAAACAzZOgAAIBcsG0BAABARlnlEgAAgMyQoQMAAHJhJGboBHQAAEAuJMV05r8lxRQGc5QI6AAAgFwYiRk6c+gAAAAySoYOAADIhfQ2Fs9O3ktABwAA5EIxKUQxhXLJNNo4WrITegIAANCPDB0AAJAPxUIqq1xGGm0cJQI6AAAgF6xyCQAAQGbI0AEAALkwEjN0AjoAACAXRmJAp+QSAADIhWJSkdpRihUrVsS0adOipqYmGhoaYsOGDYe99r/+679i7ty5ceKJJ8bxxx8fs2fPjnvuuWfQfQroAAAAynT//fdHS0tLLFu2LDZt2hSzZs2KBQsWxK5duwa8fvz48fHP//zPsX79+vjFL34RTU1N0dTUFD/60Y8G1e+gA7pHHnkkLrroopg0aVIUCoV48MEH+72fJEksXbo0Jk6cGKNHj47GxsZ4+umnB9sNAADAoCTJoW0Lyj5KKLm844474qqrroqmpqaYOXNmrFq1KsaMGROrV68e8Przzjsv3v/+98cb3vCGOOOMM+JTn/pUnHPOOfHTn/50UP0OOqDr6uqKWbNmxYoVKwZ8/9Zbb40vfvGLsWrVqnjsscfi+OOPjwULFsSBAwcG2xUAAMARe3kOXRpHRERnZ2e/o7u7e8B+e3p6YuPGjdHY2Nh3rqKiIhobG2P9+vVHMO4k2traYsuWLfHXf/3Xg/rMg14UZeHChbFw4cLDDmT58uXxL//yL3HxxRdHRMQ3vvGNqKuriwcffDAuu+yywXYHAAAwLKZMmdLv9bJly+L6669/1XV79uyJ3t7eqKur63e+rq4unnrqqcO2v2/fvpg8eXJ0d3dHZWVlfPnLX473vOc9gxpjqqtcbtu2Ldrb2/tFpuPGjYuGhoZYv379gAFdd3d3v0i3s7MzzSEBAAAjRNqrXO7YsSNqa2v7zldXV5fd9p8aO3ZsbN68Ofbv3x9tbW3R0tISM2bMiPPOO++I20g1oGtvb4+IGDAyffm9P9fa2ho33HBDmsMAAABGoGJSiGIKAd3LbdTW1vYL6A5nwoQJUVlZGR0dHf3Od3R0RH19/WHvq6ioiDPPPDMiImbPnh2/+tWvorW1dVAB3bCvcnnttdfGvn37+o4dO3YM95AAAACOWFVVVcyZMyfa2tr6zhWLxWhra4v58+cfcTvFYvGw8/QOJ9UM3cvRZ0dHR0ycOLHvfEdHR8yePXvAe6qrq1NPXQIAACPPcG4s3tLSEosXL465c+fGvHnzYvny5dHV1RVNTU0REXHllVfG5MmTo7W1NSIOVSrOnTs3zjjjjOju7o4f/OAHcc8998TKlSsH1W+qAd306dOjvr4+2tra+gK4zs7OeOyxx+LjH/94ml0BAAD0M5wB3aJFi2L37t2xdOnSaG9vj9mzZ8eaNWv6pqNt3749KipeKZDs6uqKT3ziE/Hcc8/F6NGj4+yzz45vfvObsWjRokH1O+iAbv/+/bF169a+19u2bYvNmzfH+PHjY+rUqXH11VfHzTffHK973eti+vTpcd1118WkSZPikksuGWxXAAAARyztOXSD1dzcHM3NzQO+t3bt2n6vb7755rj55ptL6udPDTqge/zxx+Pd73533+uWlpaIiFi8eHHcfffd8ZnPfCa6urriH//xH2Pv3r3xzne+M9asWRM1NTVlDxYAAIBXDDqgO++88yJJksO+XygU4sYbb4wbb7yxrIEBAAAMRpKUVi45UDtZkeocOgAAgOEynHPohsuwb1sAAABAaWToAACAXEhSWhQlSxk6AR0AAJALSi4BAADIDBk6AAAgF0Zihk5ABwAA5MJwbyw+HAR0AABALozEDJ05dAAAABklQwcAAOSCkksAAICMSqIQSaRQcplCG0eLkksAAICMkqEDAAByYSQuiiKgAwAAcmEkzqFTcgkAAJBRMnQAAEAuKLkEAADIqGKkVHKZoVUuBXQAAEAujMQMnTl0AAAAGSVDBwAA5EIxCqmUSyq5BAAAONpSKrkMJZcAAAAMNRk6AAAgF0bixuICOgAAIBdG4iqXAjoAACAXin880mgnK8yhAwAAyCgZOgAAIBeUXAIAAGRUMUlnQZNiksJgjhIllwAAABklQwcAAORCEoVIIoWSyxTaOFoEdAAAQC6MxH3olFwCAABklAwdAACQC4cWRUmnnawQ0AEAALlgDh0AAEBGmUMHAABAZsjQAQAAuZAkh4402skKAR0AAJALSRSiOMLm0Cm5BAAAyCgZOgAAIBeSpBBJCguapNHG0SKgAwAAcsEqlwAAAGSGDB0AAJALyR+PNNrJCgEdAACQCyOx5FJABwAA5ELxj0ca7WSFOXQAAAAZJUMHAADkgm0LAAAAMmokzqFTcgkAAJBRMnQAAEAu2LYAAAAgo5RcAgAAkBkydAAAQC6MxH3oBHQAAEAu2LYAAAAgo5JIJ7uWpUVRzKEDAADIKBk6AAAgF5JIqeQyslNyKUMHAADkQjFJ7yjFihUrYtq0aVFTUxMNDQ2xYcOGw1575513xrnnnhsnnXRSnHTSSdHY2Pia1x+OgA4AAKBM999/f7S0tMSyZcti06ZNMWvWrFiwYEHs2rVrwOvXrl0bl19+eTz88MOxfv36mDJlSlx44YXx/PPPD6pfAR0AAJALSYpHRERnZ2e/o7u7+7B933HHHXHVVVdFU1NTzJw5M1atWhVjxoyJ1atXD3j9t771rfjEJz4Rs2fPjrPPPju++tWvRrFYjLa2tkF9ZgEdAACQC8WkkNoRETFlypQYN25c39Ha2jpgvz09PbFx48ZobGzsO1dRURGNjY2xfv36Ixr7iy++GAcPHozx48cP6jNbFAUAAGAAO3bsiNra2r7X1dXVA163Z8+e6O3tjbq6un7n6+rq4qmnnjqivj772c/GpEmT+gWFR0JABwAA5EIx0tmH7uU2amtr+wV0Q+WWW26J++67L9auXRs1NTWDuldABwAA5EKSpLRtwSDbmDBhQlRWVkZHR0e/8x0dHVFfX/+a995+++1xyy23xI9//OM455xzBj1Wc+gAAIBcKKZ4DEZVVVXMmTOn34ImLy9wMn/+/MPed+utt8ZNN90Ua9asiblz5w6y10MGHdA98sgjcdFFF8WkSZOiUCjEgw8+2O/9D3/4w1EoFPod733ve0saHAAAQBa0tLTEnXfeGV//+tfjV7/6VXz84x+Prq6uaGpqioiIK6+8Mq699tq+6z//+c/HddddF6tXr45p06ZFe3t7tLe3x/79+wfV76BLLru6umLWrFnxkY98JD7wgQ8MeM173/veuOuuu/peH27yIAAAQFqS5NCRRjuDtWjRoti9e3csXbo02tvbY/bs2bFmzZq+hVK2b98eFRWv5NNWrlwZPT098bd/+7f92lm2bFlcf/31R9zvoAO6hQsXxsKFC1/zmurq6r9YKwoAAJCmYhSiGOXPoSu1jebm5mhubh7wvbVr1/Z7/eyzz5bUx58bkjl0a9eujVNPPTXOOuus+PjHPx6//e1vD3ttd3f3qzbsAwAA4C9LPaB773vfG9/4xjeira0tPv/5z8e6deti4cKF0dvbO+D1ra2t/TbrmzJlStpDAgAARoBikt6RFalvW3DZZZf1/fqv/uqv4pxzzokzzjgj1q5dGxdccMGrrr/22mujpaWl73VnZ6egDgAAGLyU5tBFhgK6Id+2YMaMGTFhwoTYunXrgO9XV1f3bdh3tDbuAwAA8uflOXRpHFkx5AHdc889F7/97W9j4sSJQ90VAADAiDLoksv9+/f3y7Zt27YtNm/eHOPHj4/x48fHDTfcEJdeemnU19fHM888E5/5zGfizDPPjAULFqQ6cAAAgD81nNsWDJdBB3SPP/54vPvd7+57/fL8t8WLF8fKlSvjF7/4RXz961+PvXv3xqRJk+LCCy+Mm266yV50AADAkCr+8UijnawYdEB33nnnRfIaIeuPfvSjsgYEAADAkUl9lUsAAIDhkNaWAyN62wIAAIDhkEQ6Ow5kKJ4b+lUuAQAAGBoydAAAQC4cKrksfw85JZcAAABHmW0LAAAAMmokbltgDh0AAEBGydABAAC5oOQSAAAgo5RcAgAAkBkydAAAQC4kSTpbDii5BAAAOMqSPx5ptJMVSi4BAAAySoYOAADIhWJKJZdptHG0COgAAIBcsG0BAABARtm2AAAAgMyQoQMAAHLBHDoAAICMsm0BAAAAmSFDBwAA5IKSSwAAgIwaidsWKLkEAADIKBk6AAAgF0biPnQCOgAAIBeKkdIcuvKbOGoEdAAAQC7YtgAAAIDMkKEDAAByIUnSKZfM0iqXAjoAACAXkiSlkssMBXRKLgEAADJKhg4AAMgF2xYAAABkVDGJKKZQdJnG1gdHi5JLAACAjJKhAwAAcmEk7kMnoAMAAHKhmNK2BVkquRTQAQAAuZD88b802skKc+gAAAAySoYOAADIBSWXAAAAGTUS96FTcgkAAJBRMnQAAEAuJElKi6Ik2am5FNABAAC5MBJLLgV0AABALozEDJ05dAAAABklQwcAAORCEumUS2YnPyegAwAAcqKYJFFMIRwrKrkEAABgqMnQAQAAuZBESouiZKjoUkAHAADkwkjctkDJJQAAQEbJ0AEAALlQjJQWRclQyaUMHQAAkAvFJEntKMWKFSti2rRpUVNTEw0NDbFhw4bDXvvkk0/GpZdeGtOmTYtCoRDLly8vqU8BHQAAkAtJiv8N1v333x8tLS2xbNmy2LRpU8yaNSsWLFgQu3btGvD6F198MWbMmBG33HJL1NfXl/yZBXQAAAAD6Ozs7Hd0d3cf9to77rgjrrrqqmhqaoqZM2fGqlWrYsyYMbF69eoBr3/rW98at912W1x22WVRXV1d8hgFdAAAQC68PIcujSMiYsqUKTFu3Li+o7W1dcB+e3p6YuPGjdHY2Nh3rqKiIhobG2P9+vVD+pktigIAAORC2oui7NixI2pra/vOHy6TtmfPnujt7Y26urp+5+vq6uKpp54qezyvRUAHAAAwgNra2n4B3bFIQAcAAORCqQuaDNTOYEyYMCEqKyujo6Oj3/mOjo6yFjw5EubQAQAAuZCkNH9usAFdVVVVzJkzJ9ra2vrOFYvFaGtri/nz56f9MfuRoQMAAChTS0tLLF68OObOnRvz5s2L5cuXR1dXVzQ1NUVExJVXXhmTJ0/uW1ilp6cn/u///q/v188//3xs3rw5TjjhhDjzzDOPuF8BHQAAkAvFQjEKhWL57cTg21i0aFHs3r07li5dGu3t7TF79uxYs2ZN30Ip27dvj4qKVwokd+7cGW9+85v7Xt9+++1x++23x7ve9a5Yu3btEfcroAMAAHKhGEkUUlzlcrCam5ujubl5wPf+PEibNm1aJEn5YxXQAQAAufDyLLg02skKi6IAAABklAwdAACQC8WIlEous2NQGbrW1tZ461vfGmPHjo1TTz01LrnkktiyZUu/aw4cOBBLliyJk08+OU444YS49NJLX7UfAwAAQNqKhWJqR1YMKqBbt25dLFmyJB599NF46KGH4uDBg3HhhRdGV1dX3zWf/vSn43vf+1585zvfiXXr1sXOnTvjAx/4QOoDBwAAGOkGVXK5Zs2afq/vvvvuOPXUU2Pjxo3x13/917Fv37742te+Fvfee2+cf/75ERFx1113xRve8IZ49NFH421ve1t6IwcAAPgTxShGIYWCyVK2LRguZc2h27dvX0REjB8/PiIiNm7cGAcPHozGxsa+a84+++yYOnVqrF+/fsCArru7O7q7u/ted3Z2ljMkAABghBqJAV3Jq1wWi8W4+uqr4x3veEe86U1vioiI9vb2qKqqihNPPLHftXV1ddHe3j5gO62trTFu3Li+Y8qUKaUOCQAAYEQpOaBbsmRJ/PKXv4z77ruvrAFce+21sW/fvr5jx44dZbUHAACMTC/vQ5fGkRUllVw2NzfH97///XjkkUfitNNO6ztfX18fPT09sXfv3n5Zuo6Ojqivrx+wrerq6qiuri5lGAAAAH2KhWIUUlihMrcll0mSRHNzczzwwAPxk5/8JKZPn97v/Tlz5sRxxx0XbW1tfee2bNkS27dvj/nz56czYgAAgAEkUUzlv9xm6JYsWRL33ntvfPe7342xY8f2zYsbN25cjB49OsaNGxcf/ehHo6WlJcaPHx+1tbXxyU9+MubPn2+FSwAAgJQNKqBbuXJlREScd955/c7fdddd8eEPfzgiIr7whS9ERUVFXHrppdHd3R0LFiyIL3/5y6kMFgAA4HCS6I2k9GVC+rWTFYMK6JIk+YvX1NTUxIoVK2LFihUlDwoAAGCwDs19M4cOAACADChrY3EAAIBjRTGSSCdD95crE48VAjoAACAXDs2hK6TSTlYouQQAAMgoGToAACAXRuKiKAI6AAAgF5KUNgXP7cbiAAAAx6pi9EakMIeuaA4dAAAAQ02GDgAAyAUllwAAABlVTFIquUyUXAIAADDEZOgAAIBcUHIJAACQUYcCuvLLJbMU0Cm5BAAAyCgZOgAAIBeSpBjFFBZFSZLsZOgEdAAAQC4cKpVMIaDLUMmlgA4AAMiFJKXtBtJq52gwhw4AACCjZOgAAIBcODSDTsklAABA5hxazGRkLYqi5BIAACCjZOgAAIBcSGNT8TTbORoEdAAAQC4kSRKRwvy3Q+1kg4AOAADIhbQWM8nSoijm0AEAAGSUDB0AAJALhzYEL79cMkurXAroAACAXEgrEMtSQKfkEgAAIKNk6AAAgFwYiYuiCOgAAIBcUHIJAABAZsjQAQAAuaDkEgAAIKNsWwAAAJBZSUQq2bXyg8KjxRw6AACAjJKhAwAAcuFQqWQhhXayk6ET0AEAALlwaDGTFAI6JZcAAAAMNRk6AAAgJ9LJ0GVpURQBHQAAkA8pzaGLDM2hU3IJAACQUTJ0AABALozERVEEdAAAQE6YQwcAAJBRSUqxWHYCOnPoAAAAMuqYy9C9sit7qVHx8EXT5dXaDs+9SVIso9feku89dH8ZfZc17nL6Le8zlyMpY7WlcsZdTF4alnt7k4Ml3xsRUYzS7y/v96v0fotlPV/D91yX9fVY1ipiw/M1Uc7njSj3z7l0PcXuku8t5+vxYNJT8r0RES/2lt73gd7S+y6n387u0p+RylHl/T2mq4xxl+MPZfxeHyjjS2r/S6X/nImIGN1T+tfjgWLpn/mFg2X8nCljzIVyv38dKP35rOx8saT7Ojv/EBGD+XmRZGr+WxoKSXk/TVP33HPPxZQpU4Z7GAAAwDFix44dcdpppx32/QMHDsT06dOjvb09tT7r6+tj27ZtUVNTk1qbQ+GYC+iKxWLs3Lkzxo4dG4XCqyc0dnZ2xpQpU2LHjh1RW1s7DCMkzzxfDCXPF0PJ88VQ8nwxlF7r+UqSJF544YWYNGlSVFS89myxAwcORE9PeVUBf6qqquqYD+YijsGSy4qKiteMvl9WW1vrGwpDxvPFUPJ8MZQ8XwwlzxdD6XDP17hx447o/pqamkwEYGmzKAoAAEBGCegAAAAyKnMBXXV1dSxbtiyqq6uHeyjkkOeLoeT5Yih5vhhKni+GkuerPMfcoigAAAAcmcxl6AAAADhEQAcAAJBRAjoAAICMEtABAABklIAOAAAgozIV0K1YsSKmTZsWNTU10dDQEBs2bBjuIZFRjzzySFx00UUxadKkKBQK8eCDD/Z7P0mSWLp0aUycODFGjx4djY2N8fTTTw/PYMmU1tbWeOtb3xpjx46NU089NS655JLYsmVLv2sOHDgQS5YsiZNPPjlOOOGEuPTSS6Ojo2OYRkyWrFy5Ms4555yora2N2tramD9/fvzwhz/se9+zRZpuueWWKBQKcfXVV/ed84xRquuvvz4KhUK/4+yzz+5737NVuswEdPfff3+0tLTEsmXLYtOmTTFr1qxYsGBB7Nq1a7iHRgZ1dXXFrFmzYsWKFQO+f+utt8YXv/jFWLVqVTz22GNx/PHHx4IFC+LAgQNHeaRkzbp162LJkiXx6KOPxkMPPRQHDx6MCy+8MLq6uvqu+fSnPx3f+9734jvf+U6sW7cudu7cGR/4wAeGcdRkxWmnnRa33HJLbNy4MR5//PE4//zz4+KLL44nn3wyIjxbpOfnP/95fOUrX4lzzjmn33nPGOV44xvfGL/5zW/6jp/+9Kd973m2ypBkxLx585IlS5b0ve7t7U0mTZqUtLa2DuOoyIOISB544IG+18ViMamvr09uu+22vnN79+5Nqqurk//4j/8YhhGSZbt27UoiIlm3bl2SJIeepeOOOy75zne+03fNr371qyQikvXr1w/XMMmwk046KfnqV7/q2SI1L7zwQvK6170ueeihh5J3vetdyac+9akkSXz/ojzLli1LZs2aNeB7nq3yZCJD19PTExs3bozGxsa+cxUVFdHY2Bjr168fxpGRR9u2bYv29vZ+z9u4ceOioaHB88ag7du3LyIixo8fHxERGzdujIMHD/Z7vs4+++yYOnWq54tB6e3tjfvuuy+6urpi/vz5ni1Ss2TJknjf+97X71mK8P2L8j399NMxadKkmDFjRlxxxRWxffv2iPBslWvUcA/gSOzZsyd6e3ujrq6u3/m6urp46qmnhmlU5FV7e3tExIDP28vvwZEoFotx9dVXxzve8Y5405veFBGHnq+qqqo48cQT+13r+eJIPfHEEzF//vw4cOBAnHDCCfHAAw/EzJkzY/PmzZ4tynbffffFpk2b4uc///mr3vP9i3I0NDTE3XffHWeddVb85je/iRtuuCHOPffc+OUvf+nZKlMmAjqALFqyZEn88pe/7DdHAMp11llnxebNm2Pfvn3xn//5n7F48eJYt27dcA+LHNixY0d86lOfioceeihqamqGezjkzMKFC/t+fc4550RDQ0Ocfvrp8e1vfztGjx49jCPLvkyUXE6YMCEqKytftdJNR0dH1NfXD9OoyKuXnynPG+Vobm6O73//+/Hwww/Haaed1ne+vr4+enp6Yu/evf2u93xxpKqqquLMM8+MOXPmRGtra8yaNSv+9V//1bNF2TZu3Bi7du2Kt7zlLTFq1KgYNWpUrFu3Lr74xS/GqFGjoq6uzjNGak488cR4/etfH1u3bvX9q0yZCOiqqqpizpw50dbW1neuWCxGW1tbzJ8/fxhHRh5Nnz496uvr+z1vnZ2d8dhjj3ne+IuSJInm5uZ44IEH4ic/+UlMnz693/tz5syJ4447rt/ztWXLlti+fbvni5IUi8Xo7u72bFG2Cy64IJ544onYvHlz3zF37ty44oor+n7tGSMt+/fvj2eeeSYmTpzo+1eZMlNy2dLSEosXL465c+fGvHnzYvny5dHV1RVNTU3DPTQyaP/+/bF169a+19u2bYvNmzfH+PHjY+rUqXH11VfHzTffHK973eti+vTpcd1118WkSZPikksuGb5BkwlLliyJe++9N7773e/G2LFj+2r/x40bF6NHj45x48bFRz/60WhpaYnx48dHbW1tfPKTn4z58+fH2972tmEePce6a6+9NhYuXBhTp06NF154Ie69995Yu3Zt/OhHP/JsUbaxY8f2zfd92fHHHx8nn3xy33nPGKW65ppr4qKLLorTTz89du7cGcuWLYvKysq4/PLLff8q13AvszkYX/rSl5KpU6cmVVVVybx585JHH310uIdERj388MNJRLzqWLx4cZIkh7YuuO6665K6urqkuro6ueCCC5ItW7YM76DJhIGeq4hI7rrrrr5r/vCHPySf+MQnkpNOOikZM2ZM8v73vz/5zW9+M3yDJjM+8pGPJKeffnpSVVWVnHLKKckFF1yQ/M///E/f+54t0van2xYkiWeM0i1atCiZOHFiUlVVlUyePDlZtGhRsnXr1r73PVulKyRJkgxTLAkAAEAZMjGHDgAAgFcT0AEAAGSUgA4AACCjBHQAAAAZJaADAADIKAEdAABARgnoAAAAMkpABwAAkFECOgAAgIwS0AEAAGSUgA4AACCj/n9dHgfjPWu1iAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.show_gradcam(xb, yb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[W NNPACK.cpp:53] Could not initialize NNPACK! Reason: Unsupported hardware.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3QAAAGuCAYAAADYqkTbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPnElEQVR4nO3de3wU9b3/8ffsJtkk5MIlkBAMchFFVMBCQbwrOUZqUaptEa0itfYiWDE/W0urRLFHrP6O5ago1mptT2u5tJX+rIqHImBtUSsUFRUUBUE0gQBJIPfsfH9/ULZuE4T9zoRkNq+nj3k8ZHbe853dnczuZ7/fmXGMMUYAAAAAgMAJdfQGAAAAAADsUNABAAAAQEBR0AEAAABAQFHQAQAAAEBAUdABAAAAQEBR0AEAAABAQFHQAQAAAEBAUdABAAAAQEBR0AEAAABAQFHQAUAnc/vtt8txHFVWVnb0phx1juPo9ttv7+jNiFm1apUcx9GqVasSzl5zzTXKyso6omU72/MGAAQHBR0AHAVvvfWWvva1r6lfv36KRCIqLCzUlVdeqbfeequjNw0AAARYSkdvAAAkuz/84Q+aMmWKevbsqWuvvVYDBw7U1q1b9dhjj+l3v/udFi5cqC996UsdvZlow9lnn636+nqlpaV19KYAANAmCjoAaEfvv/++rrrqKg0aNEgvvviievfuHXvsxhtv1FlnnaWrrrpKb7zxhgYNGtSBW9qa67pqampSenp6R2/KUdfQ0KC0tDSFQqEu+fwBAMHBkEsAaEf33nuv6urq9LOf/SyumJOkvLw8PfLII6qtrdU999zTKltZWamvfvWrysnJUa9evXTjjTeqoaEhbpnly5frzDPPVPfu3ZWVlaUTTjhBP/zhD+OWaWxsVFlZmY477jhFIhEVFRXp+9//vhobG+OWcxxHM2bM0G9+8xuddNJJikQievrpp9WzZ09Nmzat1fbV1NQoPT1dN998c8JtNTY26qabblLv3r2VnZ2tiy++WB999NFhX8+KigqlpKTojjvuaPXYpk2b5DiOHnzwQUnSnj17dPPNN+uUU05RVlaWcnJyNGHCBL3++utxuYPnyS1cuFC33nqr+vXrp8zMTNXU1LR5Dt1f/vIXfeUrX1H//v1jz/Gmm25SfX19m9v8wQcfqKSkRN26dVNhYaHmzJkjY8xhn+uOHTv09a9/Xfn5+YpEIjrppJP0+OOPt1rugQce0EknnaTMzEz16NFDo0eP1pNPPnnY9QMAkgM9dADQjp5++mkNGDBAZ511VpuPn3322RowYICeeeaZVo999atf1YABAzR37ly9/PLLuv/++7V371796le/knTgvLwvfvGLGj58uObMmaNIJKLNmzfrr3/9a2wdruvq4osv1ksvvaRvfvObOvHEE/Xmm2/qpz/9qd59910tXbo0rs0XXnhBixcv1owZM5SXl6chQ4boS1/6kv7whz/okUceiRt6uHTpUjU2Nuryyy9PuK1vfOMb+vWvf60rrrhCp59+ul544QVddNFFh3098/Pzdc4552jx4sUqKyuLe2zRokUKh8P6yle+IulAIbV06VJ95Stf0cCBA1VRUaFHHnlE55xzjt5++20VFhbG5e+8806lpaXp5ptvVmNj4yGHWS5ZskR1dXX6zne+o169eunVV1/VAw88oI8++khLliyJWzYajerCCy/UaaedpnvuuUfLli1TWVmZWlpaNGfOnEM+z4qKCp122mmxIrt379567rnndO2116qmpkYzZ86UJD366KP67ne/qy9/+cuxgv+NN97QK6+8oiuuuOKwrycAIAkYAEC7qKqqMpLMJZdc8pnLXXzxxUaSqampMcYYU1ZWZiSZiy++OG6566+/3kgyr7/+ujHGmJ/+9KdGktm1a9ch1/0///M/JhQKmb/85S9x8xcsWGAkmb/+9a+xeZJMKBQyb731Vtyyzz//vJFknn766bj5X/jCF8ygQYMSbmv9+vVGkrn++uvjlrviiiuMJFNWVnbI52OMMY888oiRZN588824+cOGDTPnn39+7N8NDQ0mGo3GLbNlyxYTiUTMnDlzYvNWrlxpJJlBgwaZurq6uOUPPrZy5crYvH9fxhhj5s6daxzHMR9++GFs3tSpU40kc8MNN8Tmua5rLrroIpOWlhb3vv3787722mtN3759TWVlZVw7l19+ucnNzY1twyWXXGJOOumkVtsDAOg6GHIJAO1k3759kqTs7OzPXO7g4zU1NXHzp0+fHvfvG264QZL07LPPSpK6d+8uSfrjH/8o13XbXPeSJUt04oknaujQoaqsrIxN559/viRp5cqVccufc845GjZsWNy8888/X3l5eVq0aFFs3t69e7V8+XJNnjw54bYObv93v/vduHYO9jodzqWXXqqUlJS47dmwYYPefvvtuO2JRCIKhQ58zEWjUe3evTs2LHXdunWt1jt16lRlZGQctv1PL1NbW6vKykqdfvrpMsboH//4R6vlZ8yYEfv/gz1uTU1N+vOf/9zm+o0x+v3vf6+JEyfKGBP3WpaUlKi6ujq2/d27d9dHH32kv//974fdbgBAcqKgA4B2crBQO1jYHcqhCr8hQ4bE/Xvw4MEKhULaunWrJGny5Mk644wz9I1vfEP5+fm6/PLLtXjx4rji7r333tNbb72l3r17x03HH3+8JGnnzp1xbQwcOLDV9qWkpOiyyy7TH//4x9i5cH/4wx/U3NwcV0AdaVsffvihQqGQBg8eHNfOCSec8Jmv00F5eXkaP368Fi9eHJu3aNEipaSk6NJLL43Nc11XP/3pTzVkyBBFIhHl5eWpd+/eeuONN1RdXd1qvW0997Zs27ZN11xzjXr27KmsrCz17t1b55xzjiS1Wm8oFGp1sZuDr8fB9/Hf7dq1S1VVVbHzLj89HTyX8eBrecsttygrK0tjxozRkCFDNH369LghtwCA5Mc5dADQTnJzc9W3b1+98cYbn7ncG2+8oX79+iknJ+czl3McJ+7fGRkZevHFF7Vy5Uo988wzWrZsmRYtWqTzzz9f//u//6twOCzXdXXKKafovvvua3OdRUVFrdbZlssvv1yPPPKInnvuOU2aNEmLFy/W0KFDNWLEiNgyibblxeWXX65p06Zp/fr1GjlypBYvXqzx48crLy8vtsxdd92l2267TV//+td15513qmfPngqFQpo5c2abPZpH0jsXjUb1H//xH9qzZ49uueUWDR06VN26ddOOHTt0zTXXHLKnNBEH1/G1r31NU6dObXOZ4cOHS5JOPPFEbdq0SX/605+0bNky/f73v9dDDz2k2bNnt3nhGABA8qGgA4B29MUvflGPPvqoXnrpJZ155pmtHv/LX/6irVu36lvf+larx9577724XqPNmzfLdV0NGDAgNi8UCmn8+PEaP3687rvvPt1111360Y9+pJUrV6q4uFiDBw/W66+/rvHjx7cqCBNx9tlnq2/fvlq0aJHOPPNMvfDCC/rRj34Ut8yRtnXsscfKdV29//77cb1ymzZtOuLtmTRpkr71rW/Fhl2+++67mjVrVtwyv/vd73Teeefpsccei5tfVVUVV/gl4s0339S7776rX/7yl7r6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",
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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AQAAZJSADgAAIKMyFdAtXrw4Jk2aFGVlZVFTUxMPPfTQUE+JjLrvvvti1qxZMXHixCgUCnHnnXf2+D5Jkli4cGFMmDAhRo8eHXV1dfHEE08MzWTJlKampnjXu94VY8aMifHjx8fs2bPj8ccf73HPjh07Yt68efGmN70pDj744Dj33HP3OFgUerNkyZKYPHlylJeXR3l5edTW1sbPf/7z7u+9W6TphhtuiEKhEJdddln3Ne8Y/XXNNddEoVDo0Y4//vju771b/ZeZgG7FihXR0NAQjY2N8cgjj8SUKVOivr4+Nm/ePNRTI4M6OjpiypQpsXjx4l6/v/HGG+OWW26JpUuXxoMPPhgHHXRQ1NfXx44dO/bzTMmaNWvWxLx58+KBBx6IVatWxa5du+Kss86Kjo6O7nsuv/zy+OlPfxq33357rFmzJp555pn40Ic+NISzJiuOOOKIuOGGG2LdunXx8MMPxxlnnBEf+MAH4ne/+11EeLdIz69//ev493//95g8eXKP694xBuLtb397PPvss93tV7/6Vfd33q0BSDJixowZybx587o/d3V1JRMnTkyampqGcFbkQUQkd9xxR/fnYrGYVFVVJTfddFP3ta1btyalpaXJD3/4wyGYIVm2efPmJCKSNWvWJEmy+1064IADkttvv737nt///vdJRCRr164dqmmSYYceemjyrW99y7tFal544YXk2GOPTVatWpW85z3vSS699NIkSfz9xcA0NjYmU6ZM6fU779bAZCJD19nZGevWrYu6urruayNGjIi6urpYu3btEM6MPNq4cWO0trb2eN8qKiqipqbG+0afbdu2LSIixo4dGxER69ati127dvV4v44//vg48sgjvV/0SVdXV9x2223R0dERtbW13i1SM2/evDjnnHN6vEsR/v5i4J544omYOHFiHH300XHhhRfGpk2bIsK7NVAjh3oC+2LLli3R1dUVlZWVPa5XVlbGY489NkSzIq9aW1sjInp93175DvZFsViMyy67LE4++eQ48cQTI2L3+zVq1Kg45JBDetzr/WJf/fa3v43a2trYsWNHHHzwwXHHHXfECSecEOvXr/duMWC33XZbPPLII/HrX/96j+/8/cVA1NTUxPLly+O4446LZ599Nj73uc/FqaeeGo8++qh3a4AyEdABZNG8efPi0Ucf7bFGAAbquOOOi/Xr18e2bdvixz/+ccyZMyfWrFkz1NMiB1paWuLSSy+NVatWRVlZ2VBPh5yZOXNm968nT54cNTU18eY3vzl+9KMfxejRo4dwZtmXiZLLcePGRUlJyR473bS1tUVVVdUQzYq8euWd8r4xEPPnz4+f/exnce+998YRRxzRfb2qqio6Oztj69atPe73frGvRo0aFW95y1ti2rRp0dTUFFOmTImvfOUr3i0GbN26dbF58+Z45zvfGSNHjoyRI0fGmjVr4pZbbomRI0dGZWWld4zUHHLIIfHWt741NmzY4O+vAcpEQDdq1KiYNm1aNDc3d18rFovR3NwctbW1Qzgz8uioo46KqqqqHu9be3t7PPjgg943XleSJDF//vy444474pe//GUcddRRPb6fNm1aHHDAAT3er8cffzw2bdrk/aJfisVi7Ny507vFgJ155pnx29/+NtavX9/dpk+fHhdeeGH3r71jpGX79u3x5JNPxoQJE/z9NUCZKblsaGiIOXPmxPTp02PGjBmxaNGi6OjoiLlz5w711Mig7du3x4YNG7o/b9y4MdavXx9jx46NI488Mi677LL4/Oc/H8cee2wcddRRcfXVV8fEiRNj9uzZQzdpMmHevHlx6623xk9+8pMYM2ZMd+1/RUVFjB49OioqKuLiiy+OhoaGGDt2bJSXl8enP/3pqK2tjXe/+91DPHve6BYsWBAzZ86MI488Ml544YW49dZbY/Xq1XHPPfd4txiwMWPGdK/3fcVBBx0Ub3rTm7qve8foryuuuCJmzZoVb37zm+OZZ56JxsbGKCkpiQsuuMDfXwM11Nts9sVXv/rV5Mgjj0xGjRqVzJgxI3nggQeGekpk1L333ptExB5tzpw5SZLsPrrg6quvTiorK5PS0tLkzDPPTB5//PGhnTSZ0Nt7FRHJd77zne57XnzxxeRTn/pUcuihhyYHHnhg8sEPfjB59tlnh27SZMY//MM/JG9+85uTUaNGJYcddlhy5plnJv/1X//V/b13i7T95bEFSeIdo//OO++8ZMKECcmoUaOSww8/PDnvvPOSDRs2dH/v3eq/QpIkyRDFkgAAAAxAJtbQAQAAsCcBHQAAQEYJ6AAAADJKQAcAAJBRAjoAAICMEtABAABklIAOAAAgowR0AAAAGSWgAwAAyCgBHQAAQEYJ6AAAADLq/wez/b+ctomQiQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.show_gradcam(xb[0], yb[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([16, 5, 2])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "create_conv_lin_nd_head(\n",
       "  (0): Conv1d(128, 1, kernel_size=(1,), stride=(1,))\n",
       "  (1): Linear(in_features=12, out_features=10, bias=True)\n",
       "  (2): Transpose(-1, -2)\n",
       "  (3): Reshape(bs, 5, 2)\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bs = 16\n",
    "n_vars = 3\n",
    "seq_len = 12\n",
    "c_out = 1\n",
    "xb = torch.rand(bs, n_vars, seq_len)\n",
    "new_head = partial(conv_lin_nd_head, d=(5, 2))\n",
    "net = XCMPlus(n_vars, c_out, seq_len, custom_head=new_head)\n",
    "print(net.to(xb.device)(xb).shape)\n",
    "net.head"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([16, 2])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (0): AdaptiveAvgPool1d(output_size=1)\n",
       "  (1): Reshape(bs)\n",
       "  (2): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (3): Linear(in_features=128, out_features=512, bias=False)\n",
       "  (4): ReLU(inplace=True)\n",
       "  (5): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (6): Linear(in_features=512, out_features=2, bias=False)\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bs = 16\n",
    "n_vars = 3\n",
    "seq_len = 12\n",
    "c_out = 2\n",
    "xb = torch.rand(bs, n_vars, seq_len)\n",
    "net = XCMPlus(n_vars, c_out, seq_len)\n",
    "change_model_head(net, create_pool_plus_head, concat_pool=False)\n",
    "print(net.to(xb.device)(xb).shape)\n",
    "net.head"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": "IPython.notebook.save_checkpoint();",
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/Users/nacho/notebooks/tsai/nbs/062_models.XCMPlus.ipynb saved at 2023-03-19 14:22:48\n",
      "Correct notebook to script conversion! 😃\n",
      "Sunday 19/03/23 14:22:50 CET\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" autoplay=\"autoplay\">\n",
       "                    <source src=\"data:audio/wav;base64,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\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#|eval: false\n",
    "#|hide\n",
    "from tsai.export import get_nb_name; nb_name = get_nb_name(locals())\n",
    "from tsai.imports import create_scripts; create_scripts(nb_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
